<?php

/**
 * Created by PhpStorm.
 * Author: ls
 * Time: 2021/11/5 10:34
 * Desc:  系统日志工具
 */
class Model_Tool_Log
{
    /**
     * 使用 Kohana::$config->load($logDir) 获取日志目录，
     * 需要在对应的config配置日志路由，
     * 保存路径为：BASEPATH . 'data/system_logs/'. Kohana::$config->load($kohanaLogDir);。
     * @param array|string|mixed $logData
     * @param string $kohanaLogDir 默认保存到系统调试日志目录
     * @param string $prefix 保存的文件前缀
     * @param string $title 日志标题
     * @throws Kohana_Exception
     */
    public static function write($kohanaLogDir, $logData,  $title = '', $prefix = '')
    {
        try {

            if ($kohanaLogDir == 'system_debug_log') {
                $dir = 'debug_log/';
            } else {
                $dir = Kohana::$config->load($kohanaLogDir);
            }

            // 拼接地址
            $path = BASEPATH . '/data/system_logs/'.$dir;

            // 处理多余的 '/' 、'\'
            $path = str_replace('\\', '/', $path);
            $path = str_replace('//', '/', $path);

            if (!file_exists($path)) {
                mkdir($path, 0777, true);
            }
            $log = var_export($logData, true);

            //日志文件
            $file = $path . $prefix . date('ymd') . '.txt';
            $now  = date('Y-m-d H:i:s');
            $data = "===================" . PHP_EOL;
            $data .= $now . PHP_EOL;
            if ($title) {
                $data .= $title . PHP_EOL;
            }
            $data .= $log . PHP_EOL;
            $data .= PHP_EOL;
            file_put_contents($file, $data, FILE_APPEND);
        } catch (Exception $e) {
            // 写到系统错误日志

        }
    }

    /**
     * 系统debug日志记录固定日志记录位置
     * @param $logData
     * @param string $title
     * @param string $prefix
     * @throws Kohana_Exception
     */
    public static function debug($logData, $title = '', $prefix = '')
    {
        self::write('system_debug_log', $logData, $title, $prefix);
    }
}